/*
 *  Copyright (C) 2009 Antonio Mata Chamorro
 *  
 *  Este programa es software libre: usted puede redistribuirlo y/o modificarlo
 *  bajo los t�rminos de la Licencia P�blica General GNU publicada
 *  por la Fundaci�n para el Software Libre, ya sea la versi�n 3
 *  de la Licencia, o (a su elecci�n) cualquier versi�n posterior.
 *  
 *  Este programa se distribuye con la esperanza de que sea �til, pero 
 *  SIN GARANT�A ALGUNA; ni siquiera la garant�a impl�cita
 *  MERCANTIL o de APTITUD PARA UN PROP�SITO DETERMINADO. 
 *  Consulte los detalles de la Licencia P�blica General GNU para obtener 
 *  una informaci�n m�s detallada. 
 *  
 *  Deber�a haber recibido una copia de la Licencia P�blica General GNU
 *  junto a este programa. 
 *  En caso contrario, consulte <http://www.gnu.org/licenses/>.
 *   
 */
package org.javahispano.javacup.tacticas_aceptadas.amata.com.amata.javacup.tacticas;

import org.javahispano.javacup.modelo.Posicion;

/**
 * Spot representa un punto dentro del campo de juego. Con
 * {@link Spot#getValue()} se determina que posibilidades hay desde ese punto
 * para marcar un gol. Estas posibilidades son calculadas por
 * {@link StrikeCalculator}
 * 
 * 
 * @author Antonio Mata Chamorro
 * */
public class Spot implements Comparable<Spot> {
	private Posicion posicion;
	private float value;

	public static final Spot SPOT_NULL = new Spot(new Posicion(0, 0), 0);

	public Spot(Posicion posicion) {
		this.posicion = posicion;
	}

	public Spot(Posicion posicion, float value) {
		this.posicion = posicion;
		this.value = value;
	}

	public Posicion getPosicion() {
		return posicion;
	}

	public void setPosicion(Posicion posicion) {
		this.posicion = posicion;
	}

	/**
	 * Posibilidades que desde este punto del campo del juego se pueda marcar.
	 * 
	 * @return 0 si es imposible marcar desde este punto. 1 si es totalmente
	 *         seguro que se puede marcar desde este punto.
	 * */
	public float getValue() {
		return value;
	}

	public void setValue(float value) {
		this.value = value;
	}

	@Override
	public String toString() {
		return "spot:position=" + this.posicion + ",value=" + value;
	}

	public int compareTo(Spot other) {
		if (this.value < other.getValue())
			return -1;

		return this.value > other.getValue() ? 1 : 0;
	}

}